本篇文章是一個入門文章,主要探討 GitOps 相關的起源與概念,同時介紹不少關於 GitOps 的工具
起源: Weaveworks 於 2017 年針對 Kubernetes 的工作環境產生了不同的部署方式,而 GitOps 這個詞也就那時開始萌芽發展
概念: 透過 Git PR 的方式來驗證與自動的部署所有與系統有關的修改。今天有任何部署的需求時,團隊要做的事情就是 1) 產生 Git PR 2)進行 Review 3) 合併 接者就是等任何修改被自動部署
Git 於整個環節中扮演者 Single Source of Truth 的角色,所有的修改都必須發生於 Git 本身,也因為是基於 Git 來使用,所以不論是 GitHub, Gitlab, Bitbucket, Gerrit 等系統都可以使用。
註: Bitbucket 還針對 GitOps 這種形式取了一個名為 BDDA 的名稱,意義為 Build-Diff-Deploy-Apply
好處:
1. 稽核性: 透過 Git 可以針對所有的修改去查閱,知道誰於什麼時間點進行什麼修改
2. 由於不需要將 Kubeconfig 等資源放到外部叢集,資安方面會比傳統外部直接Push/Apply 來得更好
3. 開發人員可以更容易地去部署應用,不需要仰賴Ops幫忙
4. ...etc
註: GitOps 並不是只能適用於 Kubernetes 本身,事實上整個系統架構都可以套用這種方式,譬如搭配 Terraform 等相關的 IaC 工具時,就可以透過 GitOps 來搭建整個系統,包含底層架構,k8s叢集以及最重要的應用程式
相關工具(文章列出滿多工具):
1. ArgoCD
2. Atlantis: Terraform PR 的自動化工具
3. Autoapply
4. CloudBees Rollout
5. FlexCD
6. Helm Operator
7. Flagger
8. Ignite
9. Faros
10. Gitkube
11. Jenkins X
12. KubeStack
13. Weave Cloud
14. Werf
15. PipeCD
https://medium.com/searce/gitops-the-next-big-thing-for-devops-and-automation-2a9597e51559